package com.iwhalecloud.citybrain.flow.platform.manager.domain.model;

import com.iwhalecloud.citybrain.flow.platform.manager.domain.repository.FlowTaskCandidateSettingsRepository;
import lombok.Data;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.Date;

/**
 * @Description 流程任务候选人信息设置领域模型
 * @author liujinjian
 * @date 2021-10-20
 * @version 1.0
 */
@Data
@Service
public class ModelTaskCandidateSettingsDomain implements Serializable, ApplicationContextAware {

    private static final long serialVersionUID = 3818856563831468376L;

    static FlowTaskCandidateSettingsRepository flowTaskCandidateSettingsRepository;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 部署Id
     */
    private String deployId;

    /**
     * 节点编码
     */
    private String nodeCode;

    /**
     * 数据类型：var-虚拟实体；practical-真实实体;
     */
    private String dataType;

    /**
     * 候选人类型：STA-员工；ORG-组织；ROL-用户组/角色
     */
    private String candidateType;

    /**
     * 候选人中文名称描述
     */
    private String candidateName;

    /**
     * 候选人信息内容
     */
    private String candidateValue;

    /**
     * 强制选人（0：不选；1：选人）
     */
    private String forcePick;

    /**
     * 是否已选中弹出候选人
     */
    private String isPick;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 下一节点处理人功能：0-无权限；1-有权限；
     */
    private String nextNodeHandler;

    /**
     * 可控制节点：nodeCode节点编码列表，以#号分隔；
     */
    private String controlNode;

    public void save() {
        flowTaskCandidateSettingsRepository.save(this);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        flowTaskCandidateSettingsRepository = applicationContext.getBean(FlowTaskCandidateSettingsRepository.class);
    }
}